/*
 * PistaDT.cpp - Grupo 5 - Prog. Avanzada 2011
 *
 *  Javier Dominguez - 4.901.161-6
 *  Marcelo Parada - 1.977.094-9
 *  Rodrigo Ruiz - 4.481.611-2
 *  Maximiliano Silvera - 4.106.938-6
 */

#include "PistaDT.h"

PistaDT::PistaDT()
{
	this->setArtistas(new ColConcrete<ArtistaDT*>());
}

PistaDT::PistaDT(int numero, string titulo, Tiempo *tiempo)
{
	this->setNumero(numero);

	this->setTitulo(titulo);

	this->setTiempo(new Tiempo(tiempo));

	this->setArtistas(new ColConcrete<ArtistaDT*>());
}

PistaDT::PistaDT(int numero, string nombreAlbum, int anioEdicionAlbum, string titulo, Tiempo *tiempo)
{
	this->setNumero(numero);

	this->setNombreAlbum(nombreAlbum);

	this->setAnioEdicionAlbum(anioEdicionAlbum);

	this->setTitulo(titulo);

	this->setTiempo(new Tiempo(tiempo));

	this->setArtistas(new ColConcrete<ArtistaDT*>());
}

PistaDT::PistaDT(int id, int numero, string nombreAlbum, int anioEdicionAlbum, string titulo, Tiempo *tiempo)
{
	this->setId(id);

	this->setNumero(numero);

	this->setNombreAlbum(nombreAlbum);

	this->setAnioEdicionAlbum(anioEdicionAlbum);

	this->setTitulo(titulo);

	this->setTiempo(new Tiempo(tiempo));

	this->setArtistas(new ColConcrete<ArtistaDT*>());
}

int PistaDT::getNumero() const
{
    return numero;
}

void PistaDT::setNumero(int numero)
{
    this->numero = numero;
}

int PistaDT::getAnioEdicionAlbum() const
{
    return anioEdicionAlbum;
}

string PistaDT::getNombreAlbum() const
{
    return nombreAlbum;
}

void PistaDT::setAnioEdicionAlbum(int anioEdicionAlbum)
{
    this->anioEdicionAlbum = anioEdicionAlbum;
}

void PistaDT::setNombreAlbum(string nombreAlbum)
{
    this->nombreAlbum = nombreAlbum;
}

int PistaDT::tipoTemaDT()
{
	return Pista::TIPO_TEMA;
}

bool PistaDT::same(ICollectible *icollectible)
{
	PistaDT *pistaDT = dynamic_cast<PistaDT*>(icollectible);

	return this->getTitulo().compare(pistaDT->getTitulo());
}

string PistaDT::toString()
{
	stringstream out;

	out << left;
	out << setw(6) << this->getId();
	out << setw(25) << this->getTitulo();
	out << setw(10) << this->getTiempo()->toString();
	out << setw(8) << "-";
	out << setw(20) << this->getNombreAlbum();
	out << setw(6) << this->getNumero();

	return out.str();
}

PistaDT::~PistaDT()
{
}
